<?php

namespace App\Services;
use BsPaySdk\init;
use BsPaySdk\core\BsPayClient;
use BsPaySdk\core\BsPay;
use BsPaySdk\core\BsPayTools;
use BsPaySdk\request\V2QuickbuckleApplyRequest;
use BsPaySdk\request\V2QuickbuckleWithholdApplyRequest;
use BsPaySdk\request\V2QuickbuckleWithholdPageGetRequest;

// 1. 资源及配置加载
# 加载 SDK 初始化文件
class HuifupayService
{
    public function __construct(){
        BsPay::init(config('huifupay'), true);
    }
    /**
     * 微信
     * @param $message
     * @param array $request
     * @param array $response
     */
    public static function requestLog($message,$request=[],$response=[]){
        $content = [
            'request'=>is_object($request) ? object_array($request) : $request,
            'response'=>is_object($response) ? object_array($response) : $response,
        ];
        \Illuminate\Support\Facades\Log::debug($message,$content);
    }
    public  function quickbuckleWithholdPageGet($params=[])
    {

        $request = new V2QuickbuckleWithholdPageGetRequest();
        // 请求流水号
        $request->setReqSeqId(date("YmdHis").mt_rand());
// 请求时间
        $request->setReqDate(date("Ymd"));
// 汇付Id
        $request->setHuifuId(config('huifupay.sys_id'));
// 订单号
        $request->setOrderId("20230807102136898274149");
// 订单日期
        $request->setOrderDate("20230807");

        $extendInfoMap = getExtendInfos();
        $request->setExtendInfo($extendInfoMap);

// 3. 发起API调用
        $client = new BsPayClient();
        $result = $client->postRequest($request);
        if (!$result || $result->isError()) {  //失败处理
            return $result;
        } else {    //成功处理
            return $result->getRspDatas();
        }
    }


    //代扣申请
    public  function quickbuckleWithholdApply($params=[]){
//        BsPay::init(config('huifupay'), true);

        $request = new V2QuickbuckleWithholdApplyRequest();
// 请求日期
        $request->setReqDate(date("Ymd"));
// 请求流水号
        $request->setReqSeqId(date("YmdHis").mt_rand());
// 汇付客户Id
        $request->setHuifuId(config('huifupay.sys_id'));
// 商户用户id
        $request->setOutCustId("001");
// 订单号
        $request->setOrderId("2022040823303542461831612600");
// 订单日期
        $request->setOrderDate(date("Ymd"));
// 银行卡号// 返回地址
        $request->setReturnUrl("http://www.huifu1234.com/");

        $cardId=BsPayTools::encrypt_with_rsa_pubkey('6217921957686457',config('huifupay.rsa_huifu_public_key'));
        $request->setCardId($cardId);
// 银行卡开户姓名
        $cardName=BsPayTools::encrypt_with_rsa_pubkey('申枭男',config('huifupay.rsa_huifu_public_key'));
        $request->setCardName($cardName);
// 银行卡绑定证件类型
        $request->setCertType("00");
// 银行卡绑定身份证
        $certId=BsPayTools::encrypt_with_rsa_pubkey('410822199204043555',config('huifupay.rsa_huifu_public_key'));
        $request->setCertId($certId);
// 个人证件有效期类型
        $request->setCertValidityType("0");
// 个人证件有效期起始日
        $request->setCertBeginDate("20210806");
// 个人证件有效期到期日长期有效不填；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：20420905&lt;/font&gt;
        $request->setCertEndDate("20410806");
// 银行卡绑定手机号
        $phone=BsPayTools::encrypt_with_rsa_pubkey('18766556565',config('huifupay.rsa_huifu_public_key'));
        $request->setCardMp($phone);
        // 卡的借贷类型
        $request->setDcType("D");
// CVV2信用卡交易专用需要密文传输。&lt;br/&gt;使用汇付RSA公钥加密(加密前3位，加密后最长2048位），[参见参考文档](https://paas.huifu.com/partners/guide/#/api_jiami_jiemi)；&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值：Ly+fnExeyPOTzfOtgRRur77nJB9TAe4PGgK9M……fc6XJXZss&#x3D;&lt;/font&gt;
      //  $request->setVipCode("BndOZvPCXIMcRJi1uCkw4DiNHht+KkARa+sbKbiLh4cXhjywxYM8GMl7g1a5cc1aD2PD6rVvnGzhhgpJ8mzeb/gbzNcYbU5hEXJZm5HShghGucQJB/SoqCIlyaWlz3hnclaGzznWJa5qNa50mCxVqX4zbpuGPWXv+8AnYTu8/Vk=");
// 卡有效期信用卡交易专用，格式：MMYY，需要密文传输；&lt;br/&gt;使用汇付RSA公钥加密(加密前4位，加密后最长2048位），[参见参考文档](https://paas.huifu.com/partners/guide/#/api_jiami_jiemi)；&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值：Ly+fnExeyPOTzfOtgRRur77nJB9TAe4PGgK9M……fc6XJXZss&#x3D;JXZss&#x3D;&lt;/font&gt;
// 设置非必填字段
        $extendInfoMap = getExtendInfos();
        $request->setExtendInfo($extendInfoMap);

// 3. 发起API调用
        $client = new BsPayClient();
        $result = $client->postRequest($request);
        if (!$result || $result->isError()) {  //失败处理
            return $result;
        } else {    //成功处理
               return $result;
        }
    }


    /**
     * 快捷绑卡申请接口
     * @return void
     */
    public static function quickbuckleApply($params){
        BsPay::init(config('huifupay'), true);

// 2.组装请求参数
        $request = new V2QuickbuckleApplyRequest();
// 请求日期
        $request->setReqDate(date("Ymd"));
// 请求流水号
        $request->setReqSeqId(date("YmdHis").mt_rand());
// 汇付客户Id
        $request->setHuifuId("6666000003078984");
// 商户用户id
        $request->setOutCustId("6666000103633622");
// 订单号
        $request->setOrderId("20220408105303542461831");
// 订单日期
        $request->setOrderDate("20220408");
// 银行卡号
        $request->setCardId("Ly+fnExeyPOTzfOtgRRur77nJB9TAe4PGgK9MB96o3LW2xINIxSA+B1jXDyvKNmJ5iE3wL+bbNoGd6tQXn6fmrY4vgeX8diCtP0PQVyS4UZkXzH4w8twgI+FduIukqTTl7o5/rrnL3H1HaP/Vutw3yBWrGq0l0NTebfc6XJXZss=");
// 银行卡开户姓名
        $request->setCardName("CDszEs+NOr7m3rh7qJhciqMN4mP1yXJtwXX6HFzBJ3rwJYUxSXFEv4f6AAQychfVPB2BgZeEoK6gtjrTPfv4G3SHqoow0Way6kdsGZYmXotcq1TFmmL+QKJSAhE4tl+vs69wCHh/l4X+Rxp4AyDK7zb8XG1GWOZOwshU/SOUukM=");
// 银行卡绑定证件类型
        $request->setCertType("00");
// 银行卡绑定身份证
        $request->setCertId("EXDKKVOSFZCFyB5p7VWlYYH+M1Y2dg9PzVBtX9LqF3w4NWtWg/id+XTFtLuC2ntaflB9ioohwPUuiSg/mp15MKV86u7/DPT84DuM/NTOTRS/ajO8rJ1ERhtyRxT5czJWGbpysQOBA+msxOjIG5k0MkP18nZDhpg07HoGArjmp08=");
// 个人证件有效期类型
        $request->setCertValidityType("1");
// 个人证件有效期起始日
        $request->setCertBeginDate("20210806");
// 个人证件有效期到期日长期有效不填；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：20420905&lt;/font&gt;
        $request->setCertEndDate("20410806");
// 银行卡绑定手机号
        $request->setCardMp("Qb6AcD/EaT0gKP7d2ercByeTw2oe5loZayPuKEzQi75nZKxCyJPoIvUHTvFLRqpLDNzkpvy/aAg6xvbsw1WXdKYWB15D9LpCnYQ7qHw16IjfnPA4FDR3CE5h+nU6lGoJDj+hNRkn3y73aCeNpp5E//uDKJdjrJv6ciACf4lofAo=");
// CVV2信用卡交易专用需要密文传输。&lt;br/&gt;使用汇付RSA公钥加密(加密前3位，加密后最长2048位），[参见参考文档](https://paas.huifu.com/partners/guide/#/api_jiami_jiemi)；&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值：Ly+fnExeyPOTzfOtgRRur77nJB9TAe4PGgK9M……fc6XJXZss&#x3D;&lt;/font&gt;
        $request->setVipCode("BndOZvPCXIMcRJi1uCkw4DiNHht+KkARa+sbKbiLh4cXhjywxYM8GMl7g1a5cc1aD2PD6rVvnGzhhgpJ8mzeb/gbzNcYbU5hEXJZm5HShghGucQJB/SoqCIlyaWlz3hnclaGzznWJa5qNa50mCxVqX4zbpuGPWXv+8AnYTu8/Vk=");
// 卡有效期信用卡交易专用，格式：MMYY，需要密文传输；&lt;br/&gt;使用汇付RSA公钥加密(加密前4位，加密后最长2048位），[参见参考文档](https://paas.huifu.com/partners/guide/#/api_jiami_jiemi)；&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值：Ly+fnExeyPOTzfOtgRRur77nJB9TAe4PGgK9M……fc6XJXZss&#x3D;JXZss&#x3D;&lt;/font&gt;
// $request->setExpiration("test");
// 挂网协议编号授权信息(招行绑卡需要上送)；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：34463343&lt;/font&gt;
// $request->setProtocolNo("test");
// 设备信息域 
// $request->setTrxDeviceInf(getTrxDeviceInf());

// 设置非必填字段
        $extendInfoMap = getExtendInfos();
        $request->setExtendInfo($extendInfoMap);

// 3. 发起API调用
        $client = new BsPayClient();
        $result = $client->postRequest($request);
        if (!$result || $result->isError()) {  //失败处理
            var_dump($result);
        } else {    //成功处理
            var_dump($result);
        }
    }



}
